"""
@name : 03.self详解
@author : wenyao
@projectname: xsfh
"""
#self 表示实例本身
#self 不必非写成self

# class A:
#     name = "sc"
#     age = 4
#
#     def info(self, sex):
#         print(f"我是:{self.name}, 今年{self.age}岁， 性别{sex}")
#         print(self)
#         print(id(self))
#
#     def info2(this):
#         print(f"this is {this}")
#
#     # 放在类空间的普通函数
#     def info3():
#         print("this is none")
# a = A()
# print(id(a))

#在python解释器内部，我们调用a.info()时，实际上运行的是A.info(a),也就是把对象a传给了self
# a.info("man")
#实际上运行：
# A.info(a,"man")
#
# a2 = A()
# print(id(a2))
#
# # a2.info("fmale")
# A.info(a2, "fmale")

# a.info2()  #-- > A.info2(a)
# a.info3()  #-->A.info3(a)
# A.info3()

#1、self代表实例本身
#2、self名字不是强制规定的，大家都约定俗成用self来表示
#3、方法中可以不传入self，如果不写的话不能使用对象调用
#4、实例调用方法的时候，默认就会把当前实例传给self，不需要手动传入

class Parent:
    def pprt(self):
        print(self)

class Child(Parent):
    def cprt(self):
        print(self)

c = Child()
c.cprt()
c.pprt()